//
//  NSString+Extend.h
//  CoreCategory
//
//  Created by 成林 on 15/4/6.
//  Copyright (c) 2015年 沐汐. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSString (Extend)


/*
 *  时间戳对应的NSDate
 */
@property (nonatomic, strong, readonly) NSDate *date;


/**
 *  @brief 将十六进制字符串 转 十进制
 *
 *  @param hexString 16进制字符
 *
 *  @return 10进制数字
 */
- (unsigned long long )Int10;

/**
 *  获取中文字符串的拼音
 *
 *  @return 返回拼音字符串
 */
- (NSString *)phonetic;

/**
 *  随机产生一个汉字
 *
 *  @return 返回单个不特定的汉字
 */

+ (NSString *)randomStr;
/**
 *  判断字符串是否空
 */
+(BOOL)isNullOrEmpty:(NSString *)string;
-(NSString *)toString:(NSString *)str;
-(BOOL)isSpacesExists;
-(BOOL)isSpecialCharacters;

+ (NSString *)unicodeToUTF_8:(NSString *)unicodeStr;
//unicode编码以\u开头
+ (NSString *)UTF_8ToUnicode:(NSString *)UTF_8Str;

/**
 *  是否是空字符串
 */
@property (nonatomic,readonly) BOOL isNullOrEmpty;
/**
 *  是否还有特殊字符。
 */
@property (nonatomic,readonly) BOOL isSpecialCharacters;
/**
 *  判断字符串中有没有空格,有空格返回Yes，没有空格返回NO
 *
 *  @return 有空格返回Yes，没有空格返回NO
 */
@property (nonatomic,readonly) BOOL isSpacesExists;

- (instancetype) trim;
//密码
- (BOOL) validatePassword;
/**
 *  @author bianruifeng, 16-09-03 10:09:40
 *
 *  @brief 验证昵称组成： 1到5位纯汉字
 *
 *  @return 符合(1到5位纯汉字) 返回YES 否则返回 NO
 */
- (BOOL) isValidNickname;







// 获取Documents路径
+ (NSString *)documentPath;

// 获取缓存路径
+ (NSString *)cachePath;

+ (NSString *)imageCachePath;

// 本地购物车路径
+ (NSString *)localShoppingCartPath;

//! 是否是合法邮箱
- (BOOL)isValidEmail;
//! 是否是合法号码
- (BOOL)isValidPhoneNumber;
//! 是否是合法的18位身份证号码
- (BOOL)isValidPersonID;
/**
 * 功能:判断是否在地区码内
 * 参数:地区码
 */
- (BOOL)areaCode:(NSString *)code;

//! 根据文件名返回路径
+ (NSString *)pathWithFileName:(NSString *)fileName;
+ (NSString *)pathWithFileName:(NSString *)fileName ofType:(NSString *)type;

// 根据秒数返回日期
+ (NSString *)dateWithSeconds:(NSUInteger)seconds;


/*!
 * @brief 将字符串本身进行md5加密，并将加密后的字符串返回
 * @return 返回加密后的字符串
 */

//! sha1加密
- (NSString *)sha1;

//! 获取网卡的MAC地址
+ (NSString *)obtainMacAddress;

/**
 *  判断字符串为空,如果只有空格也为空，为空返回YES;
 */
+ (BOOL)isNullOrEmpty:(NSString *)string;

/*当string为nil的时候设置为@“”值，用于建立dictionary*/

-(NSString *)toString:(NSString *)str;


/**
 *  md5加密  加密出来字母都是大写
 *
 *  @return 返回加密后的字符串
 */
-(NSString *)MD5;

/**
 *  加密出来字母都是小写
 */
- (NSString *)md5;


/**
 *  unicode编码转化字符串UTF-8
 */
+ (NSString *)UnicodeToUTF_8:(NSString *)UnicodeStr;
/**
 *  UTF-8转化字符串
 */
+ (NSString *)UTF_8ToUnicode:(NSString *)UTF_8Str;


/**
 *  字典格式化成json字符串
 *
 *  @param dictionary 字典
 *
 *  @return 返回字符串
 */
+ (NSString *)jsonStringWithDictionary:(NSDictionary *)dictionary;

/**
 *  JSON格式的字符串转换成字典,把
 *
 *  @param jsonString JSON格式的字符串
 *
 *  @return 返回字典
 */

+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;

/**
 *  AES 对称加密
 *
 *  @param content 加密内容
 *  @param key     加密密钥
 *
 *  @return 返回加密后的字符串
 */

+ (NSString *) aes256Encrypt:(NSString *)content withKey:(NSString *)key;


/**
 *  AES 解密
 *
 *  @param content 加密后的字符串
 *  @param key     加密密钥
 *
 *  @return 返回被加密的字符串
 */

+ (NSString *) aes256Decrypt:(NSString *)content withKey:(NSString *)key;



+ (NSString*)stringJsonWithFormat:(id)object;

- (id)JSONValue;

/**
 *  @author bianruifeng, 16-09-04 13:09:41
 *
 *  @brief 字符串相似度比较
 */
- (float) likePercent:(NSString *)target;



@end
